一个关于重载运算符>>和<<的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 20:42:04
/*下面这个程序包括两个文件,一个是头文件"long_int.h",他的功能是定义一个类,重载运算符>>和<<,还有一个是"mian.cpp",主程序。
错误有6个,系统提示我说返回的参数过多,请高手帮忙解决一下!*/
"long_int.h"
#ifndef LONG_INT
#define LONG_INT
#include<iostream>
#include<vector>
using namespace std;
class long_int
{
public:
istream &operator >>(istream &in,long_int &l);
ostream &operator <<(ostream &out,long_int &l);
private:
vector<char>longint;
};

istream & long_int::operator >>(istream &in,lont_int &l)
{
char input;
in>>input;
while(input!='#')
{
if(input>='0'&&input<='9')
l.longint.push_back(input);
in>>input;
}
return in;
}

ostream & long_int::operator <<(ostream &out,long_int &l)
{
for(int i=0;i<l.longint.size();i++)
out<<l.longint[i];
return o

改成友员函数,如下:
//"long_int.h"
#ifndef LONG_INT
#define LONG_INT
#include<iostream>
#include<vector>
using std::istream;
using std::ostream;
using std::vector;

class long_int
{
public:
friend istream &operator >>(istream &in,long_int &l);
friend ostream &operator <<(ostream &out,long_int &l);
private:
vector<char> longint;
};

istream& operator >>(istream &in, long_int &l)
{
char input;
in>>input;
while(input!='#')
{
if(input>='0'&&input<='9')
l.longint.push_back(input);
in>>input;
}
return in;
}

ostream & operator <<(ostream &out,long_int &l)
{
for(int i=0;i<l.longint.size();i++)
out<<l.longint[i];
return out;
}

#endif

//"main.cpp"
#include "long_int.h"